home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / CBSA / COMPUTER / WIMP2 / Docs / History < prev    next >
Text File  |  1999-05-19  |  12KB  |  325 lines

  1. History of the Tornado II Support Module:
  2. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3.  
  4. 19-05-1999:
  5. -=-=-=-=-=-
  6.  * Now has ROM build option (for inclusion into a ROM image)
  7.  * Fixed bug where Wimp2_EnumerateTasks was (yet again!) returning data for
  8. tasks which had died long ago (thanks to Andreas Walter for this)
  9.  
  10. Released v0.36 to the world!
  11.  
  12. 20-03-1999:
  13. -=-=-=-=-=-
  14.  * Finally greyed out Kill Task option in Wimp2Ctrl as it isn't supported
  15.  * Fixed bug reported by Andreas Walter: OS_GBPB 4 corrupts R4 so subsequent
  16. OS_File 5 has wrong R4
  17.  * Fixed bug reported by Andreas Walter: Addr for returning to the kernel
  18. from OS_* calls varies between platforms. Now uses a cunning guess routine to
  19. determine the address.
  20.  * Fixed bug reported by Andreas Walter: Addr of R13_svc base varies between
  21. platforms. Now guesses the base (rounds up to nearest 4k boundary)
  22.  
  23. 17-02-1999:
  24. -=-=-=-=-=-
  25. In the days leading to this ...
  26.  * Three new calls, Wimp2_OpenTemplate, Wimp2_CloseTemplate and
  27. Wimp2_ReportError. The first two disable preemption during them (thus fixing
  28. the open template bug) and the third does a preemptively multitasked error
  29. box. Note it doesn't work yet!
  30.  * A number of utilities, including a memory copying routine, string copying
  31. routine, string length calculator and optimised divide routine.
  32.  * Wimp2 now maintains redraw areas in a seperate queue and conglomerates the
  33. rectangles it receives, thus speeding redraws.
  34.  
  35. Released to Andrew only.
  36.  
  37. Version 0.33 fixed wrong pars to OS_SynchroniseCodeAreas
  38.  
  39. 03-02-1999:
  40. -=-=-=-=-=-
  41.  * Fixed spurious tab at end of each line produced by *wimp2_listtasks
  42.  * Fixed formatting error in *wimp2_listtasks
  43.  * Stopped *wimp2_listtasks generating so many spaces it locks the machine!
  44.  * Fixed bug where patched OS_File load routines were checking R3=0, not just
  45. the bottom byte only
  46.  * Now OS_File load routines sync CPU caches if R3 top bit is set
  47.  * Added two new service messages to notify if pointer has entered or exited
  48. a Wimp2 task's window
  49.  * Updated docs.
  50.  
  51. Released as v0.32
  52.  
  53. 26-01-1999:
  54. -=-=-=-=-=-
  55.  * Fixed bug that when *Desktop was done, a complaint was made about a
  56. missing command *Wimp2_StartDekstopTask (removed in v0.21)
  57.  * Fixed bug in file op multitask code where file loads were crapping over
  58. RMA and not setting R0-R5 on exit as well! Nasty bug this ...
  59.  * Fixed bug in file op multitask code where OS_File 12 & 14 were using the
  60. wrong bits in OS_Find (a typo in the RO2 PRM's believe it or not ...)
  61.  * Added OS_File 0 intercept, this was cos Zap saves its files this way
  62.  * Changed the Templates in Wimp2Ctrl to ones compatible with <RO3.5
  63. machines, thanks to whoever (forgotton!) who provided these.
  64.  
  65. Released as v0.31.
  66.  
  67. 24-01-1999:
  68. -=-=-=-=-=-
  69. Fixed bug in EnumerateTasks where empty records were being returned.
  70.  
  71. Fixed bug where OS version was being incorrectly reported.
  72.  
  73. Added OS_File 10,12,14,16,255 interception to do the ops via buffered i/o
  74. (ie; allows preemption during them)
  75.  
  76. Released as v0.30
  77.  
  78. 20-01-1999:
  79. -=-=-=-=-=-
  80. Released v0.27 to the public.
  81.  
  82. 18-01-1999:
  83. -=-=-=-=-=-
  84. v0.27 now.
  85.  
  86. Noticed Wimp2 task manager got dead slow when many tasks were active so
  87. changed its update method.
  88.  
  89. Blaringly obvious bug introduced in v0.26, fixed.
  90.  
  91. 16-01-1999:
  92. -=-=-=-=-=-
  93. v0.26 now.
  94.  
  95. Added poll mask to Wimp2_Poll, did away with HaltPreemption,
  96. RestartPreemption and SetPollMask as the new system incorporates all these
  97. anyway.
  98.  
  99. Added new service messages so patch doesn't try patching native Wimp2 apps.
  100.  
  101. 14-01-1999:
  102. -=-=-=-=-=-
  103. Oops, forgot to update for quite a while!
  104.  
  105. Added *-commands to give helpful info.
  106.  
  107. Extended EnumerateTasks to give more info.
  108.  
  109. Made Initialise and CloseDown swallow their Wimp equivs.
  110.  
  111. Added SetTaskData, used to reset the used counter and max settings.
  112.  
  113. Added code to compute how long task is taking between polls.
  114.  
  115. Added code to preempt immediately if Poll queue is empty.
  116.  
  117. Added KillProcess, used to kill Wimp2 tasks. Isn't implemented yet though.
  118.  
  119. 04-12-1998:
  120. -=-=-=-=-=-
  121. Moved to v0.21. Added return code 2 from 17, 18 & 19 handler code. Oddly
  122. doesn't seem to work.
  123.  
  124. Added *Wimp2_ListTasks command.
  125.  
  126. 03-12-1998:
  127. -=-=-=-=-=-
  128. Fixed patch to no longer intercept SWI vector. Was slowing machine and was
  129. incompatible with pre-Arm6 and RO3.8+. Now uses a generic patching method.
  130.  
  131. 27-12-1998:
  132. -=-=-=-=-=-
  133. Added HaltPreemption and RestartPreemption. These don't work properly yet.
  134.  
  135. Added service calls made just prior and just after Wimp_Poll. Allows patch to
  136. set and remove semaphores.
  137.  
  138. Renamed module to Wimp2 to reflect it no longer being associated with Tornado.
  139.  
  140. Shuffled SWI's around. Changed SWI block for new module name.
  141.  
  142. Added EnumerateTasks and Version.
  143.  
  144. 30-12-1996:
  145. -=-=-=-=-=-
  146. Due to my mother dying on the 22nd after having been in hospital since the
  147. 20th, essentially a whole week has been lost in development. This means
  148. threads will not be implemented by the end of these Christmas holidays.
  149. Apologies to those I promised they would be.
  150.  
  151. During the week fixed many potential reentracy problems and finally twigged
  152. today yet another reentracy problem and fixed it through some god-awful code
  153. to get around the SA bug too. It does mean interrupts get disabled for a good
  154. bit of time though :(
  155.  
  156. Added Tornado_SetPollMask
  157.  
  158. 18-12-1996:
  159. -=-=-=-=-=-
  160. Now is version 0.12alpha.
  161.  
  162. Fixed a bug in which Tornado_Initialise was returning the wrong tornado version
  163.  
  164. Implemented 1ms interrupt facilites.
  165.  
  166. 1ms interrupt facilities don't seem to work! But after six hours of trial and
  167. error, it would seem you need R14 in the stack frame. Why? Dammed if I know.
  168.  
  169. 17-12-1996 (v0.11alpha release):
  170. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  171. And then it hits me!!!! It may well be 3am, but I know what it is!!!
  172.  
  173. Tornado_RedrawWindow turns off preemption. But it doesn't really - it only
  174. turned off the *interrupt* routine - so if there the polling code had
  175. /already/ been requested by the interrupt routine and was pending - it would
  176. execute during the redraw loop, right where it mustn't.
  177.  
  178. Thus the error was randomish. The worst kind.
  179.  
  180. I hate these kinds of bugs.
  181.  
  182. Now it tests the semaphore in the actual polling code instead. I hate easy
  183. fixes to horrible bugs.
  184.  
  185. Changed the polling code so that if it's locked it sets a flag to tell
  186. Tornado_GetRectangle to restart preemption once it's finished. It's more
  187. efficient than interrupting every 1ms to see if the redraw's done yet.
  188.  
  189. Fixed a small potential bug in that should an app die during a redraw it will
  190. take the support module with it as preemption is still locked out and this is
  191. a global semaphore. Now it checks on app death to see if the semaphore is
  192. set, and if it is it unsets it. Should be enough as the context consistancy
  193. is maintained AFAICS.
  194.  
  195. Fixed another bug introduced by RO3 - apparently it doesn't like the
  196. environment handlers getting changed unless it changed them. This BTW breaks
  197. the RO2 API *again* in which you always set up your handler before using it -
  198. never relying on it being set to anything from previous settings as anything
  199. else might have changed it.
  200.  
  201. Obviously some twat at Acorn didn't think of this possibility ... anyway, the
  202. module now restores the callback handler state after it's finished with that
  203. handler.
  204.  
  205. Some odd bug still remains which causes preemption to halt and everything to
  206. hang. I'm dammed if I know what it is though, but it's rare enough to make
  207. myself feel okay in releasing it.
  208.  
  209. Changed how the preemptor requests restarting - now a general purpose status
  210. variable is used and this can be used to determine the state of the system at
  211. any time.
  212.  
  213. Released version 0.11alpha to hensa.
  214.  
  215. 16-12-1996:
  216. -=-=-=-=-=-
  217. Spent the day trying to figure out this damn GetRectangle bug ...
  218.  
  219. 15-12-1996:
  220. -=-=-=-=-=-
  221. Added error handling to the demo app.
  222.  
  223. Fixed a bug in the memory routines that was causing RMA usage mode to die.
  224.  
  225. Seems this GetRectangle bug is random. I have a window running here for the
  226. past ten minutes okay yet the one before it died after only a few seconds.
  227. Odd.
  228.  
  229. 14-12-1996:
  230. -=-=-=-=-=-
  231. Thought it was a bug on SprOp 52 but actually it was my preemptor code not
  232. exiting from the interrupt properly when a lock had been placed on
  233. preemption. Twat I am ...
  234.  
  235. Now everything works! At 6.52pm today I am proud to announce the first fully
  236. functional preempted RO multitasking application ever to run on the Acorn
  237. series!
  238.  
  239. Ooar - doesn't seem to work quite so well! Somehow for odd reasons crashes
  240. and dies with "Wimp_GetRectangle not called correctly". Odd.
  241.  
  242. Also the whole thing doesn't work on RO2. :( I think it's because RMA usage
  243. doesn't work too great!
  244.  
  245. 13-12-1996:
  246. -=-=-=-=-=-
  247. Yet another bug in RO has had me for a day now ...
  248.  
  249. This bug is in sprite area initialisation - when you initialise it with bits
  250. 8 and 9 clear it utterly bollocks the sprite area (not that any of the sprite
  251. routines notice of course but just blindly lock up the machine in a random
  252. nature). This one *definately* worked on RO2 ...
  253.  
  254. 12-12-1996:
  255. -=-=-=-=-=-
  256. This bug has had me for four days now ...
  257.  
  258. Found it! Subroutines like .getblk and .execathread as called from .callwimppoll
  259. use R13 which is a temporary variable in .callwimppoll!!!!
  260.  
  261. It was using the fp register dump as a stack for a while and other areas too.
  262. Nasty!
  263.  
  264. Added vdu redirection dumping. Redirection into mask calls not trapped yet
  265. though.
  266.  
  267. Bug found in RO! RO2 uses &2e,60,0,0,1 to return to screen - RO3.5 hangs on
  268. this. Needs &2e,512+60,0,0,1 apparently (twats at Acorn ...). This BTW yet
  269. again breaks API's *written* *in* *stone* in the RO2 PRM's but the twats just
  270. don't care ... :(
  271.  
  272. Added error handling throughout the module. It now traps all possible problems
  273. and sends them somewhere - when it can (it can't always). It also doesn't
  274. necessarily send them to a nice place - the current application's error
  275. handler is one such example ... ;)
  276.  
  277. Added facilities for a client application to handle errors occurring in the
  278. tornado preemptor routine and fix the problem where necessary
  279.  
  280. 08-12-1996:
  281. -=-=-=-=-=-
  282. Now is version 0.11alpha.
  283.  
  284. Added a trap to shut down the task as a preempted one should it die
  285. unnaturally.
  286.  
  287. Added check in module finalise for whether tasks are still using it.
  288.  
  289. Added check to Tornado_Initialise to stop it running more than 32 processes
  290.  
  291. Added memory freeing on call Tornado_Closedown - memory leakage now doesn't
  292. happen anymore
  293.  
  294. Added stacking and restoral of FP registers over Wimp_Poll - checks first to
  295. see whether the FPEmulator can handle multiloads and stores and uses them if
  296. it can.
  297.  
  298. 07-12-1996 (v0.10alpha release):
  299. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  300. Found the bug sticking me for a long time (since last night): R12 was getting
  301. corrupted by the APCS veneer for the 17,18 and 19 handler and then everything
  302. was accessing the wrong workspace!
  303.  
  304. Uploaded the first version of the support module (0.10alpha) to hensa and
  305. mailed it to a few friends.
  306.  
  307. 06-12-1996:
  308. -=-=-=-=-=-
  309. Ran through the code - found myself using SVC reliant code where I was in USR
  310. mode. Fixed it and it works (10.25pm)! (this also has the advantage as the
  311. SVC reliant code causes that bug in the SA so this is no longer a problem).
  312.  
  313. Added Wimp_Poll returns storage and Tornado_Poll to retrieve it all.
  314. Implemented support for 17,18 & 19 codes handler. Won't work though ... :(
  315.  
  316. 30-11-1996:
  317. -=-=-=-=-=-
  318. Cobbled together some old tornado I code and rewrote it for this new
  319. non-tornado context. Wrotes skeleton API's.
  320.  
  321. Awful skeleton module created but then refused to work. Realised 68000
  322. programming was the cause and fixed the problems. Never tested it though.
  323.  
  324. Then went back to Trinity for the last week of term ...
  325.